package fun.werfamily.wf.order.core.domain.service;


import fun.werfamily.wf.base.vo.PageInfo;
import fun.werfamily.wf.order.core.domain.dto.req.OrderConfirmReqDTO;
import fun.werfamily.wf.order.core.domain.dto.req.OrderListReqDTO;
import fun.werfamily.wf.order.core.domain.dto.req.OrderReqDTO;
import fun.werfamily.wf.order.core.domain.dto.req.OrderSubmitReqDTO;
import fun.werfamily.wf.order.core.domain.dto.result.OrderCancelDTO;
import fun.werfamily.wf.order.core.domain.dto.result.OrderDTO;
import fun.werfamily.wf.order.core.domain.dto.result.OrderListDTO;
import fun.werfamily.wf.order.core.domain.dto.result.OrderStatisticsDTO;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: Mr.WenMing Zhang
 * @Date: 2022-08-28 12:19
 * @Description:
 */
public interface OrderService {

    /**
     * 确认订单
     *
     * @param orderConfirmReqDTO
     * @return
     */
    OrderDTO orderConfirm(OrderConfirmReqDTO orderConfirmReqDTO);

    /**
     * 提交订单
     *
     * @param orderSubmitReqDTO
     * @return
     */
    OrderDTO orderSubmit(OrderSubmitReqDTO orderSubmitReqDTO);

    /**
     * 创建订单
     *
     * @param orderConfirmReqDTO
     * @return
     */
    OrderDTO orderCreate(OrderConfirmReqDTO orderConfirmReqDTO);

    /**
     * 订单详情
     *
     * @param orderReqDTO
     * @return
     */
    OrderDTO orderInfo(OrderReqDTO orderReqDTO);

    /**
     * 取消订单
     *
     * @param orderReqDTO
     * @return
     */
    OrderCancelDTO cancelOrder(OrderReqDTO orderReqDTO);

    /**
     * 订单列表
     *
     * @param orderListReqDTO
     * @return
     */
    PageInfo<OrderListDTO> orderList(OrderListReqDTO orderListReqDTO);

    /**
     * 订单统计
     * @return
     */
    OrderStatisticsDTO orderCount();
}
